#include "Servo.h"
#include "tim.h"
#include <stdint.h>

extern TIM_HandleTypeDef htim1;

uint8_t  Servo_Status;

void Servo_Init(void)
{
    HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1); // 启动定时器1的通道1用于PWM输出
}

void Servo_SetAngle(uint8_t angle)
{
    if (angle > 180) angle = 180; // 限制角度在0-180度之间
    uint32_t pulse = (50 + (angle * 2000) / 180); // 计算PWM脉冲宽度，范围50-2050
    __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, pulse); // 设置比较寄存器的值
}

void Curtain_Open(void)
{
    Servo_SetAngle(0); // 打开窗帘，设置舵机到0度
    Servo_Status = SERVO_ON;
}

void Curtain_Close(void)
{
    Servo_SetAngle(180); // 关闭窗帘，设置舵机到180度
    Servo_Status = SERVO_OFF;
}